<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <script type="text/javascript">
        /**
         * 这是一道思路很明确的题，很适合符合实战遇到的情况，
         * 这里我们使用map进行存储计数，maxNum记录最大个数，result记录返回值
         * 遍历数组，如果map中存在该类型，则计数加一，否则计数为1，
         * 遍历结束后，将map中计数最大的类型(可能包含多个)和最大个数以数组返回
         */
      const _findMostType = (array) => {
        // 补全代码
        let result = [];
        let maxNum = 0;
        let map = new Map();

        Object.keys(array).forEach((key) => {
          let type = typeof array[key];
          if (map.has(type)) {
            map.set(type, map.get(type) + 1);
            maxNum = Math.max(maxNum, map.get(type));
          } else {
            map.set(type, 1);
            maxNum = 1;
          }
        });

        map.forEach((value, key) => {
          if (value === maxNum) {
            result.push(key);
          }
        });

        result.push(maxNum);

        return result;
      };
      console.log(_findMostType([0,0,'','']))
    </script>
  </body>
</html>
